#pragma once

#include "ApproxAlgorithm.h"

class LCSAlgorithm final : public ApproxAlgorithm {
public:

    LCSAlgorithm(double similarity_threshold) :
                 ApproxAlgorithm(similarity_threshold) { }

    LCSAlgorithm(const LCSAlgorithm&) = delete;
    LCSAlgorithm& operator=(const LCSAlgorithm&) = delete;
    virtual ~LCSAlgorithm() = default;

    virtual double getSim(const FilePairType& file_pair) const override;

private:
    unsigned int LCS(const std::string& s1, const std::string& s2) const;
};
